package com.shine.design.pattern.guide.singleton.demo1;

/**
 * @Description: 单例模式，饿汉式
 * 它基于classloader机制避免了多线程的同步问题，不过，instance在类装载时就实例化，虽然
 * 导致类装载的原因有很多种，在单例模式中中大多数都是调用getInstance方法，但是也不能确定
 * 有其他的方式（比如其他的静态方法被调用）导致类加载，这时候初始化instance显然没有达到
 * lazy loading的效果。
 * @CreateTime: 2023/8/27 12:22
 * @Version:
 * @Since: 1.8
 * @Author: Forward Seen
 */
public class Singleton {
    /**
     * 在类初始化的时候就创建对象
     */
    private static Singleton singleton = new Singleton();

    /**
     * 将构造函数私有化，这样外部就无法new该类的对象了
     */
    private Singleton() {
    }

    public static Singleton getInstance() {
        return singleton;
    }
}